const names = ["abc","cba","nba"]
const nums = [10,22,33,12]

function createArrayIterator(arr) {
    let index = 0
    return {
        next:function () {
            if(index < arr.length){
                return {done:false,value:arr[index++]}
            }else{
                return {done:true,value:undefined}
            }
        }
    }
}

const namesInterator = createArrayIterator(names)
console.log(namesInterator.next())
console.log(namesInterator.next())
console.log(namesInterator.next())
console.log(namesInterator.next())

const numInterator = createArrayIterator(nums)
console.log(numInterator.next())
console.log(numInterator.next())
console.log(numInterator.next())
console.log(numInterator.next())
console.log(numInterator.next())

//创建一个无线的迭代器
function createNumberIterator() {
    let index = 0; 
    return{
        next:function () {
            return{done:false,value:index++}
        }
    }
}

const numberInterator = createNumberIterator()

// 迭代器是一个对象
// 符合迭代器协议
// const iterator ={{next:function(){return{}}}
// 可迭代对象是一个对象
// 符合可迭代协议（iterable protocol）:[Symbol.iterator]函数

// 可迭代对象？
// 它与迭代器是不同概念；当一个对象实现了iterable protocol协议时，它就是一个可迭代对象
// 这个对象的要求是必须实现@@iterator方法，在代码中我们使用Symbol.iterator访问该属性
